/******************************************************************************
 * @brief: app config 配置文件
 * @Author:   aple
 * @Date: 2022-12-07 20:37:48
 * @LastEditors: aple
 * @LastEditTime: 2022-12-10 18:33:16
 * @Verision: 1.0.0.0
 ******************************************************************************/
#ifndef APP_CFG_H_H_
#define APP_CFG_H_H_

/*******************************************************************************
 * @brief  设备型号开发代号，唯一编码。用于分辨是否同一型号设备。
 *         IAP或参数导入导出必须检测其一致性。
 *******************************************************************************/
#define DEVICE_MODEL 0xA000A000

/*******************************************************************************
 * @brief  软件版本
 *******************************************************************************/
#define APP_VERSION 1000

/*******************************************************************************
 * @brief  COMMON CONFIG
 *******************************************************************************/
#define PAR_VISION 0x55A5 // 参数顺序有变化时修改, USB导入导出参数时检测其合法性
#define PAR_UPDATE 0x3366 // 首次上电初始化参数标记

/*******************************************************************************
 * @brief  仿真配置
 *******************************************************************************/
#define SIMULINK_MODE (1)
#define SEC_PER_MIN ((ii16)60)
#define MIN_PER_HOUR ((ii16)60)

/*******************************************************************************
 * @brief  时段程序配置: 当 PROG_SEG_MAX 设为 0 表示没有程序
 *         SEG0  存储定值参数
 *         SEG1 ~ SEG_MAX 存储程序参数
 *******************************************************************************/
#define PROG_SEG_MAX 4			  // 程序组最大时段编号
#define PROG_GROUP_AMOUNT 2		  // 程序组数量
#define PROG_GROUP_MULTI_BUFFER 0 // 编辑不同步模式必须将所有组数据全部加载至内存

/*******************************************************************************
 * @brief  分组程序配置
 *******************************************************************************/
#define GP_BASE_AMOUNT 3 // group par same as stri
#define GP_SUB_MAX 10
#define GP_LIST_LEN 12 // 没有时可设为0

/*******************************************************************************
 * @brief  UI 参数重映射功能
 *******************************************************************************/
#define UI_PAR_REMAP_EN 1

/*******************************************************************************
 * @brief  文本参数配置
 *******************************************************************************/
#define TEXT_PAR_EN 1 // 文本参数开启
#define TEXT_PAR_LEN 28

/*******************************************************************************
 * @brief  用户参数配置
 *******************************************************************************/
#define USER_FUN_EN 1 // 用户管理功能
#define U0_NAME_DEFAULT "admin"
#define U0_PASSWORD_DEFAULT "000"
#define USER_MAX 36

/*******************************************************************************
 * @brief  EEPROM 配置
 *******************************************************************************/
#define EEP_EN 0
#define EEP_ENCPTY_EN 0

#define EEP_SYS_PAR_BASE 0
#define EEP_GROUP_PAR_BASE 0x200
#define EEP_PROG_PAR_BASE 0x800
#define EEP_SYS_TEXT_BASE 0xC00
#define EEP_USER_BASE 0xE00

/*******************************************************************************
 * @brief  FLASH 配置
 *******************************************************************************/
#define EXT_FLASH_ADDR_MIX_LOG nMB(1)
#define EXT_FLASH_ADDR_SIMP_LOG (nMB(1) + nKB(512))

// 参数
#define FLASH_EEP_EN 1

#define EXT_FLASH_ADDR_SYS_PAR nMB(2)
#define EXT_FLASH_ADDR_PROG (EXT_FLASH_ADDR_SYS_PAR + nKB(128))
#define EXT_FLASH_ADDR_TEXT (EXT_FLASH_ADDR_PROG + nKB(128))
#define EXT_FLASH_ADDR_GP_PAR (EXT_FLASH_ADDR_TEXT + nKB(128))
#define EXT_FLASH_ADDR_USER_PAR (EXT_FLASH_ADDR_GP_PAR + nKB(128))

#define EXT_FLASH_ADDR_HIST_MDATA (EXT_FLASH_ADDR_USER_PAR + nKB(128))

// 日志
#define EXT_FLASH_ADDR_HIST_OPT nMB(2) // 操作日志 1MB
#define EXT_FLASH_ADDR_HIST_ALR nMB(3) // 报警日志 1MB
#define EXT_FLASH_ADDR_HIST_RUN nMB(4) // 运行日志 2MB
#define EXT_FLASH_ADDR_HIST_DAT nMB(6) // 历史数据 10MB-26MB

/*******************************************************************************
 * @brief  传感器配置
 *******************************************************************************/
#define T_MAX 5000 // 温度上限
#define T_MIN -600 // 温度下限

/*******************************************************************************
 * @brief  IO多链接，开启多链接可实现多IO同步，但会降低IO操作效率
 *******************************************************************************/
#define APP_IO_MULTI_LINK 1

/*******************************************************************************
 * @brief  按键参数密码
 *******************************************************************************/
#define LK_NOR 8	 // 普通用户参数
#define LK_PRINT 118 // 打印存储、RTC修改
#define LK_SYS 168	 // 系统参数
#define LK_FUN 3288	 // 工厂配置

#define LK_USER_PSW 2248	// 当前用户密码修改
#define LK_USER_MANAGE 2268 // 用户密码及权限管理，仅用户0可进入
#define LK_USER_LOGIN 1		// 重新登录用户
#define LK_MARK 2588		// 标定

#define LK_TEMP 18	// 温度控制
#define LK_HUMI 28	// 湿度控制
#define LK_MOTOR 38 // 电机控制
#define LK_CO2 58	// CO2控制

#define LK2_USER_MANAGE 3688 // 二层密码 ： 用户密码及权限管理
#define LK2_MARK 368		 // 二层密码 ： 标定

/*******************************************************************************
 * @brief  设备基础功能
 *******************************************************************************/
#define FUNC_BASE_CO2_EN 1	 //
#define FUNC_BASE_O2_EN 0	 //
#define FUNC_BASE_PRESS_EN 0 //
#define FUNC_BASE_SPEED_EN 1 //
#define FUNC_BASE_LT234_EN 0 //
#define FUNC_BASE_LT1_EN 1	 //
#define FUNC_BASE_UV_EN 1	 //

/*******************************************************************************
 * @brief  历史数据功能配置
 *******************************************************************************/
#define HIST_RUN_TIME_EN 0 // 存储运行时间

/*******************************************************************************
 * @brief  END
 *******************************************************************************/

#endif /* APP_CFG_H_H_ */
